#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import argparse
import ConfigParser
import dircache
import os
import shutil
import sys
from daemon import DaemonContext
from daemon.pidlockfile import PIDLockFile

from NetEbbms import NetEbbms

import psyco
psyco.full()

def main():
	# スクリプトパスを取得 #
	scriptDirPath = os.path.abspath(os.path.dirname(__file__))


	# 設定ファイルディレクトリパスを取得 #
	configDirPath = os.path.join(os.path.split(os.path.split(scriptDirPath)[0])[0], 'config')


	# 設定ファイルパスを取得 #
	configFilePath = os.path.join(configDirPath, 'netebbms.conf')


	# モデル リスト ファイル パスを取得 #
	modelListFilePath = os.path.join(configDirPath, 'model.list')


	# インスタンス作成 #
	myNetEbbms = NetEbbms(configFilePath, modelListFilePath)


	# 設定ファイル読み込み #
	config = ConfigParser.SafeConfigParser()
	config.read(os.path.join(scriptDirPath, 'animation.conf'))
	config_convertImageDir = config.get('convert', 'image_dir')


	# 画像のキャッシュ用ディレクトリを作成 #
	if os.path.exists(config_convertImageDir) == False:
		os.makedirs(config_convertImageDir)


	# 保存された画像変換 #
	try:
		while True:
			for dirName in dircache.listdir(config_convertImageDir):
				dirPath = os.path.join(config_convertImageDir, dirName)
				print dirPath
				if os.path.isdir(dirPath) == True:
					myNetEbbms.setImage(
						generator = 'animation',
						memo = '',
						mode = 'COUNT',
						enable = True,
						count = 1,
						end_time = 0.0,
						backcolor = 'black',
						imagepath = dirPath,
						scroll = 0,
						positionX = 0,
						positionY = 0
					)

#					shutil.rmtree(dirPath)

	except Exception, ex:
		print >> sys.stderr, ex
		sys.exit(1)

	finally:
		myNetEbbms.close()


if __name__ == "__main__":
	# コマンドラインオプションをパース #
	parser = argparse.ArgumentParser()
	parser.add_argument(
		'-d', '--daemon',
		action = 'store_true',
		default = False,
		dest = 'runDaemon',
		help = 'run this script as daemon'
	)
	args = parser.parse_args()

	try:
		if args.runDaemon == True:
			# デーモンとして起動 #
			dc = DaemonContext(
				pidfile = PIDLockFile('/var/run/netebbms/animation.pid'),
				stderr = open('/var/log/netebbms/animation_error.log', 'w+')
			)

			with dc:
				main()

		else:
			# コマンドとして起動 #
			main()

	except KeyboardInterrupt:
		pass

	except Exception, ex:
		print >> sys.stderr, ex
		sys.exit(1)

